/*

给定一个仅包含大小写字母和空格 ' ' 的字符串 s，返回其最后一个单词的长度。如果字符串从左向右滚动显示，那么最后一个单词就是最后出现的单词。

如果不存在最后一个单词，请返回 0 。

说明：一个单词是指仅由字母组成、不包含任何空格字符的 最大子字符串。

 

示例:

输入: "Hello World"
输出: 5

来源：力扣（LeetCode）
链接：https://leetcode-cn.com/problems/length-of-last-word
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。

执行用时 :4 ms, 在所有 C++ 提交中击败了74.29%的用户
内存消耗 :6.7 MB, 在所有 C++ 提交中击败了100.00%的用户

复杂度分析：
时间可以算作O(1)，空间O(1)
直接从最后开始，常数时间遍历就可以

*/

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <string.h>
using namespace std;


class Solution {
public:
    int lengthOfLastWord(string s) {
        if (s == "" || s == " ")  return 0;
        int len = 0;
        char* end = &s[s.size()-1];
        while (*end==' ') {
            end--;
        }
        while ((*end >= 'a' && *end <= 'z') || (*end >= 'A' && *end <= 'Z') ) {
            end--;
            len++;
            if (end == &s[0]) {
            	if ((*end >= 'a' && *end <= 'z') || (*end >= 'A' && *end <= 'Z'))  len++;
            	break;
            }
        }
        return len;
    }
};
int main(int argc, char const *argv[])
{
	Solution s;
	string ss = " en  ";
	cout<<s.lengthOfLastWord(ss)<<endl;
	return 0;
}